Amazon ELBでAuto Scaling設定時のEC2インスタンス自動起動/停止スクリプト
Amazon ELBでAuto Scalingの設定をしている場合、スクリプト等でEC2の自動停止を行なっていても、 最小インスタンス数に設定した数のEC2インスタンスが自動で起動してしまい料金が掛かってしまいます。
運用テスト期間中など使わない時間帯は、ELBからもインスタンスを解放して費用を抑えたい! ってことで、毎日Auto Scaling Groupの紐付けが面倒くさいので、スクリプト化しました。
なんてことない、AutoScallingGroupの、MIN_SIZEとMAX_SIZEを変更しているだけです。
#!/bin/bash case $1 in start) # 最小1、最大2 MIN_SIZE=1 MAX_SIZE=2 ;; stop) # 最小0、最大0 MIN_SIZE=0 MAX_SIZE=0 ;; *) echo "Usage: $0 [start|stop]" exit 1 esac export JAVA_HOME=/usr/local/jdk6 export AWS_AUTO_SCALING_HOME=/opt/AutoScaling-1.0.39.0 export PATH=$PATH:/bin:$AWS_AUTO_SCALING_HOME/bin export AWS_AUTO_SCALING_URL=https://autoscaling.ap-northeast-1.amazonaws.com export EC2_REGION=ap-northeast-1 export AWS_CREDENTIAL_FILE=/home/ec2-user/credential.txt AUTO_SCALING_GROUPS=`as-describe-auto-scaling-groups | cut -f3 -d ' ' | tr ' ' '\n'` CMD=as-update-auto-scaling-group for AUTO_SCALING_GROUP in $AUTO_SCALING_GROUPS do echo $AUTO_SCALING_GROUP $CMD $AUTO_SCALING_GROUP --min-size $MIN_SIZE --max-size $MAX_SIZE done
後は、起動/停止したい時間帯にcronを設定します。
$ crontab -e # 平日9:30にELBにインスタンスを紐付ける 30 9 * * 1-5 /home/ec2-user/bin/manage_elb.sh start # 平日22:00にELBからインスタンスを解放する 0 22 * * 1-5 /home/ec2-user/bin/manage_elb.sh stop
ちなみは、ELB自体の起動/停止はできないので、別途作成/削除のスクリプトをつくる必要がありますが、
料金的には$0.025/時間と安いので、プロジェクトではやってません。。